//package com.ksvip.next.components.util.rowkey;
//
//import java.io.IOException;
//
//import com.ksvip.next.components.core.constant.SystemConstants;
//import org.apache.hadoop.hbase.TableName;
//import org.apache.hadoop.hbase.client.Admin;
//import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;
//import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;
//import org.apache.hadoop.hbase.client.Connection;
//import org.apache.hadoop.hbase.client.TableDescriptor;
//import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
//import org.apache.hadoop.hbase.util.Bytes;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//
///**
// */
//public class HBasePrePartition {
//
//    private static Logger log = LoggerFactory.getLogger(HBasePrePartition.class);
//
//    /**
//     * 预分区 创建表,创建一个cf
//     */
//    public static void createTable(Connection connection, String table, int region) throws IOException {
//        createTable(connection, table, SystemConstants.CF, region);
//    }
//
//    /**
//     * 预分区 创建表,创建一个cf
//     */
//    public static void createTable(Connection connection, String table, String cf, int region) throws IOException {
//        //使用HBase配置创建新连接
//        //或者HBase集群的管理员实例,实例不是线程安全的
//        Admin admin = connection.getAdmin();
//        //创建表名描述
//        TableName tableName = TableName.valueOf(table);
//        //创建表描述,并赋予表名
//        TableDescriptorBuilder tableBuilder = TableDescriptorBuilder.newBuilder(tableName);
//        //Builder构建列族信息
//        ColumnFamilyDescriptor cfd = ColumnFamilyDescriptorBuilder.newBuilder(cf.getBytes()).build();
//
//
//        //将列族信息也赋予表描述对象
//        TableDescriptor tableDescriptor = tableBuilder.setColumnFamily(cfd).build();
//        //创建表
//        admin.createTable(tableDescriptor, splitKeys(region));
//        //关闭
//        admin.close();
//        //关闭
//        connection.close();
//    }
//
//    /**
//     * 预分区个数 大于等于10 小于等于99
//     *
//     * @param region [10,99]
//     * @return
//     */
//    private static byte[][] splitKeys(int region) {
//        byte[][] splitKeys = new byte[region][];
//        for (int i = 0; i < region; i++) {
//            String formatregion = String.format("%02d", i) + "|";
//            splitKeys[i] = formatregion.getBytes();
//        }
//        return splitKeys;
//    }
//
//    public static void listTableNames(Connection connection) throws IOException {
//        try (Admin admin = connection.getAdmin()) {
//            TableName[] tableName = admin.listTableNames();
//            for (TableName c : tableName) {
//                log.info("tableName={}", c.toString());
//                System.out.println("tableName="+c.toString()+"|"+ Bytes.toString(c.getQualifier()));
//
//            }
//        }
//    }
//}
